package com.sc.nft.entity.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.sc.nft.entity.ActivityCoupons;
import com.sc.nft.enums.CouponsStatusEnum;
import com.sc.nft.enums.CouponsTypeEnum;
import com.sc.nft.util.Beans;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author liGen
 * @version 1.0
 * @date 2023/12/5 5:10 下午
 */
@Data
public class ActivityCouponsDetailDTO {

    /**
     * id
     */
    @ApiModelProperty(value = "主键ID")
    private Long id;

    /**
     * 优惠券名称
     */
    @ApiModelProperty("优惠券名称")
    private String title;

    /**
     * 券类型
     */
    @ApiModelProperty("券类型")
    private CouponsTypeEnum couponsType;

    /**
     * 消费金额
     */
    @ApiModelProperty("消费金额")
    private BigDecimal fullMoney;

    /**
     * 减免金额
     */
    @ApiModelProperty("减免金额")
    private BigDecimal money;
    /**
     * 优惠券折扣
     */
    @ApiModelProperty(value = "优惠券折扣")
    private BigDecimal proportion;

    /**
     * 活动开始时间
     */
    @ApiModelProperty("活动开始时间")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /**
     * 活动结束时间
     */
    @ApiModelProperty("活动结束时间")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /**
     * 领券后多少天生效
     */
    @ApiModelProperty("领券后多少天生效")
    private Integer afterDay;

    /**
     * 有效天数
     */
    @ApiModelProperty("有效天数")
    private Integer validDay;

    /**
     * 活动商品ID
     */
    @ApiModelProperty("活动商品ID")
    private String productIds;

    /**
     * 优惠券活动状态
     */
    @ApiModelProperty("优惠券活动状态")
    private CouponsStatusEnum status;

    /**
     * 排序字段
     */
    @ApiModelProperty("排序字段")
    private Integer sort;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    protected Date createTime;

    public static ActivityCouponsDetailDTO build(ActivityCoupons activityCoupons){
        ActivityCouponsDetailDTO activityCouponsDetailDTO = new ActivityCouponsDetailDTO();
        Beans.copyProperties(activityCoupons,activityCouponsDetailDTO);
        return activityCouponsDetailDTO;
    }
}
